home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
011-020
/
amok12
/
module
/
module.doc
< prev
next >
Wrap
Text File
|
1993-11-04
|
5KB
|
127 lines
Bernd Preusing Oct-88
Erläuterungen zu den Modulen:
Die Definitions-Module sollten auf jeden Fall genau gelesen werden,
hier sind nur einige Hinweise und der 'Grobzweck' beschrieben!
ArraySort:
Sort sortiert einen ARRAY OF ADDRESS in aufsteigender Reihenfolge.
Dieser ARRAY kann ein ARRAY OF POINTER TO ... oder auch ein
ARRAY OF LONGINT o.ä. sein.
Die eigentliche Sortierung erfolgt durch den Aufruf der Prozedur
'less' vom Typ prLess, die die beiden übergebenen Adressen
interpretieren kann, wie sie will.
Dadurch kann man also beliebige Objekte wie RECORDs, Strings oder
Zahlen sortieren. ein kleines Beispiel ist in SortDemo gezeigt,
welches auch Timer2 benutzt.
Timer2:
Viel Leute haben Probleme, die Prozeduren des Moduls Timer zu benutzen.
Das ist auch kein Wunder, denn der übergebene Parameter
timer: ADDRESS ist nichts wert, weil er vom Compiler wieder
überschrieben wird! CODE-Prozeduren können einzig und allein von
Library-Modulen exportiert werden (jedenfalls bis zur heutigen
Compiler-Version)!!
Also schrieb ich Timer2.mod, das diese Prozeduren und einige weitere
zur Verfügung stellt, ohne daß man den ganzen Overhead des Device-
Öffnens usw. in Kauf nehmen muß.
U.A. sind hier auch zwei Prozeduren enthalten, die eine Stoppuhr
emulieren. Zu Beginn ruft man StartTime() auf, am Ende StopTime(t).
t ist vom Typ TimeVal und enthält dann die seit StartTime vergangene
Zeit.
Des weiteren gibt es GetSysTime(t), das die aktuelle Systemzeit in
t ablegt. Ein SetsysTime habe ich absichtlich nicht implementiert,
weil es bei falscher Handhabung zu Problemen führt, und außerdem
wird die Systemzeit ja hoffentlich beim Einschalten des Amiga
gesetzt.
InOut2:
ist ein erweitertes InOut, welches folgende Prozeduren zusätzlich
enthält:
SetInput(name:ARRAY OF CHAR);
SetOutput(name:ARRAY OF CHAR);
Diese beiden erlauben das direkte Öffnen eines IO-Files, ohne daß
der Benutzer wie bei OpenInput, OpenOutput eine Eingabe machen muß,
denn diese hat er ja evtl. schon als Programm-Parameter übergeben.
WriteCount(adr: ADDRESS; count: LONGINT)
WriteCount(adr: ADDRESS; count: LONGINT)
Damit kann man nun alles lesen und schreiben und das FileSystem
wird in den meisten Fällen überflüssig.
ReadLn(VAR str: ARRAY OF CHAR; VAR len: INTEGER);
Liest eine Textzeile ein, die mit eol (line feed) beendet ist.
ReadString liest ja nur bis zum ersten Trennzeichen, welches auch
ein Leerzeichen sein kann! Außerdem ist ReadLn erheblich schneller,
Interessierte sollten sich die Implementation ansehen!
TwoFiles:
benutzt InOut2, um 1 oder 2 Files als Ein- und/oder Ausgabe zu
setzen. Dabei benutzt es die Kommandozeilen- bzw. Workbench-
Parameter, um die Filenamen zu erhaltem. Falls keine Parameter
(mehr) da sind, wird der Benutzer gefragt.
Dies ergibt ein Verhalten ähnlich m2c und m2l.
OpenFiles(in,out:BOOLEAN):BOOLEAN
Ein Hauptprogramm sieht dann z.B. nur noch so aus:
WHILE OpenFiles(TRUE,TRUE) DO
InOut2.Read... InOut2.Write...
END;
Es wird jeweils ein File für Lesen und eins für Schreiben geöffnet
und bearbeitet, bis keine Parameter mehr da sind oder der Benutzer
einfach RETURN drückt.
OpenFiles(TRUE,FALSE) öffnet nur ein Input-File, OpenFiles(FALSE,TRUE)
öffnet nur ein Output-File. OpenFiles(FALSE,FALSE) ist sinnlos!
Falls eine OptProcedure gesetzt wurde, wird sie beim Auftauchen eines
Parameters, der mit '-' beginnt, aufgerufen. Sie kann dann die Option
auswerten.
Falls Files für Output geöffnet werden, wird vorher geprüft, ob sie
bereits existieren. In diesem Fall wird der Benutzter gefragt, ob
das File gelöscht werden soll.
Dieses Verhalten kann mittels SetAsk(FALSE) abgeschaltet werden.
TextWindow:
öffnet ein 4farb-Backdrop-Window auf einem eigenen Screen (wie m2emacs)
und bietet etliche Prozeduren zur Text-Ein- und Ausgabe sowie einige
Spezialitäten z.B. für Menüs o.ä.
Assembler:
ist nur ein Def-Modul (* $M- *), welches ich brauchte, um die Originale
einiger M2Amiga-Module zu rekonstruieren. Es sollte in dieser Form
nicht benutzt werden, weil es von einigen der System-Module importiert
wird, aber eben nicht das Original IST. Hier kommt der Linker dann
ins Schleudern, weil die 'Keys' nicht übereinstimmen.
Wer es benutzen will, sollte es in Assembler2 umbenennen und neu
kompilieren!
XDos:
ist ein $M- dos.library-Modul, welches Zugang zu ALLEN dos-Funktionen
bietet. Es gibt eine ganze Reihe, die nicht dokumentiert sind.
Leider weiß auch ich nicht, was sie bewirken. Einige werden vom
Modul Terminal benutzt. Wer weiß etwas Genaues????
Janus:
ist ein $M- janus.library-Modul (die janus.library verwaltet die PC-
Karte). Um dieses Modul zu benutzen benötigt man ein gehörige Portion
Wissens über diese Library und die PC-Karte. Ich hatte noch nicht die
nötige Lust, eine entsprechende Dokumentation zu schreiben, zumal ich
immer noch hoffe, daß Commodore dies endlich einmal nachholt!
Ich benutze dies Modul, um Befehle an den PC zu geben, ohne daß ein
PC-Window geöffnet sein muß. Ein Demo kann ich aber leider noch nicht
liefern, weil es noch nicht 100%ig funktioniert. Interessenten bitte
bei mir melden!
ENDE